#include "cavalier.h"

#include "partie.h"

GLint Cavalier::lid = 0;

GLint Cavalier::getLid() {
    return lid;
}

void Cavalier::calculDeplacements(bool suppr_echecs) {
    ajouterCoup(suppr_echecs, x,y,CASE_ACTUELLE);

    // 1 à gauche, 2 en bas
    if ((x>0 && y>1)) {
        if (parent->LirePlateau(x-1,y-2) == NULL)
            ajouterCoup(suppr_echecs, x-1,y-2,DEPLACEMENT);
        else if (parent->LirePlateau(x-1,y-2)->getCouleur() != this->couleur)
            ajouterCoup(suppr_echecs, x-1,y-2,CAPTURE);
    }
    // 2 à gauche, 1 en bas
    if ((x>1 && y>0)) {
        if (parent->LirePlateau(x-2,y-1) == NULL)
            ajouterCoup(suppr_echecs, x-2,y-1,DEPLACEMENT);
        else if (parent->LirePlateau(x-2,y-1)->getCouleur() != this->couleur)
            ajouterCoup(suppr_echecs, x-2,y-1,CAPTURE);
    }
    // 2 à gauche, 1 en haut
    if ((x>1 && y<7)) {
        if (parent->LirePlateau(x-2,y+1) == NULL)
            ajouterCoup(suppr_echecs, x-2,y+1,DEPLACEMENT);
        else if (parent->LirePlateau(x-2,y+1)->getCouleur() != this->couleur)
            ajouterCoup(suppr_echecs, x-2,y+1,CAPTURE);
    }
    // 1 à gauche, 2 en haut
    if ((x>0 && y<6)) {
        if (parent->LirePlateau(x-1,y+2) == NULL)
            ajouterCoup(suppr_echecs, x-1,y+2,DEPLACEMENT);
        else if (parent->LirePlateau(x-1,y+2)->getCouleur() != this->couleur)
            ajouterCoup(suppr_echecs, x-1,y+2,CAPTURE);
    }
    // 1 à droite, 2 en haut
    if ((x<7 && y<6)) {
        if (parent->LirePlateau(x+1,y+2) == NULL)
            ajouterCoup(suppr_echecs, x+1,y+2,DEPLACEMENT);
        else if (parent->LirePlateau(x+1,y+2)->getCouleur() != this->couleur)
            ajouterCoup(suppr_echecs, x+1,y+2,CAPTURE);
    }
    // 2 à droite, 1 en haut
    if ((x<6 && y<7)) {
        if (parent->LirePlateau(x+2,y+1) == NULL)
            ajouterCoup(suppr_echecs, x+2,y+1,DEPLACEMENT);
        else if (parent->LirePlateau(x+2,y+1)->getCouleur() != this->couleur)
            ajouterCoup(suppr_echecs, x+2,y+1,CAPTURE);
    }
    // 2 à droite, 1 en bas
    if ((x<6 && y>0)) {
        if (parent->LirePlateau(x+2,y-1) == NULL)
            ajouterCoup(suppr_echecs, x+2,y-1,DEPLACEMENT);
        else if (parent->LirePlateau(x+2,y-1)->getCouleur() != this->couleur)
            ajouterCoup(suppr_echecs, x+2,y-1,CAPTURE);
    }
    // 1 à droite, 2 en bas
    if ((x<7 && y>1)) {
        if (parent->LirePlateau(x+1,y-2) == NULL)
            ajouterCoup(suppr_echecs, x+1,y-2,DEPLACEMENT);
        else if (parent->LirePlateau(x+1,y-2)->getCouleur() != this->couleur)
            ajouterCoup(suppr_echecs, x+1,y-2,CAPTURE);
    }
}
